package global

type (
	MetaConvertTitle struct {
		Seq               string `json:"任务序号"`
		Schema            string `json:"库名"`
		Table             string `json:"表名"`
		Behavior          string `json:"行为"`    /* alter | create */
		IssueType         string `json:"类型"`    /* 用于区分表中不同属性，table、index可选值：index primary、index unique 、indes name   column可选值：column name、column type、column null、column default column comment等*/
		Active            string `json:"动作"`    /*用于需要执行的动作，可选值：drop、add、modify、copy*/
		Logo              string `json:"标识"`    /*(列名|索引名)*/
		SrcValue          string `json:"源端列属性"` /* 记录源端的值，可以是多个*/
		DstValue          string `json:"目端列属性"`
		FixRecommendation string `json:"修复意见"` /*记录因为异构数据库导致的数据差异*/
		Comment           string `json:"备注"`
	}
	MetaExecTitle struct {
		Seq      string `json:"任务序号"`
		Schema   string `json:"库名"`
		Table    string `json:"对象名"`
		Role     string `json:"角色"`
		Behavior string `json:"行为"`   /* alter | create */
		FixFay   string `json:"修复方式"` /*修复方式，目前有file，table*/
		Exec     string `json:"执行状态"` /*执行状态，成功、失败*/
		Comment  string `json:"备注"`
		ErrInfo  string `json:"错误信息"`
		FixSql   string `json:"修复语句"`
		RawSql   string `json:"原始sql"`
	}
	MetaTitleSheetName struct {
		Terminal   string `json:"terminal"`
		Result     string `json:"convertRecord"`
		ExecRecord string `json:"execRecord"`
		MissTable  string `json:"missTable"`
	}
)
type MetaAttributesAb struct {
	Type      bool `json:"type"` //为true表示存在属性差异
	Null      bool `json:"null"`
	Default   bool `json:"default"`
	Comment   bool `json:"comment"`
	Charset   bool `json:"charset"`
	Collation bool `json:"collation"`
}
type IndexAttributesAb struct {
	Type       bool //索引类型 是否存在差异
	ColumnName bool //列名是否存在差异
}
type PartitionAttributesAb struct {
	Rules bool //规则是否存在差异
}
type MetaModifyAttributesAb struct {
	Add []string
	Del []string
	Mod map[string]*MetaAttributesAb
}

type IndexModifyAttributesAb struct {
	Add []string
	Del []string
	Mod map[string]*IndexAttributesAb
}
type PartitionModifyAttributesAb struct {
	Add []string
	Del []string
	Mod []string
}

// HeterogeneousConvertRecord 记录异构数据库的建表语句转换操作
type HeterogeneousConvertRecord struct {
	Object   string //对象，索引，分区还是其他
	Logo     string //标识 是索引名 还是列名
	OldValue string //src value
	NewValue string //new value
	Reason   string //转换原因
}
type AlterSqlResult struct {
	Record string //差异记录
	Sql    string
}
type CreatSqlResult struct {
	Record []HeterogeneousConvertRecord
	Sql    string
}
